// index.js
import api from '../../services/api'
import { isLoggedIn, getUserInfo, clearTokenAndRandomKey } from '../../utils/http'

Page({
  data: {
    cases: [], // 首页精选案例列表
    defaultImage: '/images/case_placeholder.png', // 默认图片
    bannerList: [], // 轮播图列表
    latitude: "",
    longitude: "",
    latelyStore: {}, // 附近门店信息
    userName: "", // 用户名
    userInfo: {}, // 用户信息
    overlayShow: false, // 报价弹窗显示状态
    isLoggedIn: false, // 添加登录状态标识
    // 新闻相关数据
    newsList: [], // 新闻列表
    newsPageNo: 1, // 新闻页码
    newsPageSize: 10, // 每页新闻数量
    newsLoading: false, // 新闻加载状态
    newsNoMore: false, // 是否没有更多新闻
    // 回到顶部按钮
    showBackToTop: false, // 是否显示回到顶部按钮
  },
  
  onLoad() {
    this.fetchCases();
    this.queryHomeData();
    this.fetchNewsList(); // 获取新闻列表
  },

  onShow() {
    // 检查登录状态并获取用户信息
    this.checkLoginStatus();
  },
  
  // 检查登录状态并获取用户信息
  checkLoginStatus() {
    const loggedIn = isLoggedIn();
    
    if (loggedIn) {
      const userInfo = getUserInfo();
      
      // 获取其他相关信息
      const isStorage = wx.getStorageSync('isStorage');
      
      this.setData({
        isLoggedIn: true,
        userName: userInfo.userName || '',
        userInfo: {
          ...userInfo,
          isStorage: isStorage
        }
      });
      
      // 如果已登录，可以调用API获取最新用户信息
      this.fetchUserInfoFromServer();
    } else {
      this.setData({
        isLoggedIn: false,
        userName: '',
        userInfo: {}
      });
    }
  },
  
  // 从服务器获取最新用户信息
  async fetchUserInfoFromServer() {
    try {
      // 这里可以调用用户信息API来获取最新数据
      // 暂时保持现有逻辑
      const userInfo = wx.getStorageSync('userInfo');
      if (userInfo) {
        const parsedUserInfo = typeof userInfo === 'string' ? JSON.parse(userInfo) : userInfo;
        this.setData({ 
          userInfo: parsedUserInfo,
          userName: parsedUserInfo.userName || ''
        });
      }
    } catch (error) {
      console.error('获取用户信息失败:', error);
    }
  },
  
  // 获取首页精选案例列表
  fetchCases() {
    const params = {
      pageNo: 1,
      pageSize: 2, // 首页只展示两个精选案例
      caseType: 0, // 添加参数 caseType:0
      order: 'popular' // 默认使用热门推荐排序
    };
    
    api.product.getCaseList(params)
      .then(res => {
        console.log('Home cases response:', res);
        if (res.status === 200 && res.data) {
          // 处理图片URL
          const cases = res.data || [];
          cases.forEach(item => {
            // 确保有案例ID
            if (!item.caseId && item.id) {
              item.caseId = item.id;
            }
            
            // 添加标题
            item.title = item.productName || '';
            
            // 处理封面图
            if (item.coverPicture) {
              item.coverImg = item.coverPicture.startsWith('http') ? 
                item.coverPicture : `https://${item.coverPicture}`;
            } else {
              item.coverImg = this.data.defaultImage;
            }
            
            // 处理描述
            item.description = `${item.productSeries || ''} ${item.productName || ''}`;
            
            // 处理标签
            if (item.label) {
              item.tag = item.label.split(',')[0];
            }
            
            // 确保有有效的ID用于导航
            console.log('Case item:', item);
          });
          
          this.setData({
            cases: cases
          });
        } else {
          console.error('获取案例失败:', res);
        }
      })
      .catch(err => {
        console.error('获取案例失败:', err);
      });
  },

  // 获取首页数据（轮播图等）
  async queryHomeData() {
    try {
      // 这里需要根据实际的API接口调用
      // 暂时使用模拟数据
      const mockData = {
        bannerList: [
          {
            picture: 'https://oss.h-ksg.com/kag_case_picture/20220809214505.jpg',
            url: ''
          }
        ]
      };
      
      this.setData({ 
        bannerList: mockData.bannerList
      });
    } catch (error) {
      console.error('获取首页数据失败:', error);
    }
  },

  // 弹窗控制
  onOverlayHide() {
    this.setData({ overlayShow: false });
  },

  onOverlayShow() {
    this.setData({ overlayShow: true });
  },

  // 退出登录
  doLoginOut() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 使用统一的清除函数
          clearTokenAndRandomKey();
          
          // 清除其他相关缓存
          wx.removeStorageSync('userName');
          wx.removeStorageSync('isStorage');
          wx.removeStorageSync('userLevel');
          
          // 重新检查登录状态
          this.checkLoginStatus();
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success'
          });
        }
      }
    });
  },

  // 打开地图定位
  openLocation(e) {
    const { latelyStore } = this.data;
    if (latelyStore.longitude && latelyStore.latitude) {
      wx.openLocation({
        latitude: Number(latelyStore.latitude),
        longitude: Number(latelyStore.longitude),
        name: latelyStore.storeName,
        address: latelyStore.storeAddress,
        scale: 18,
        fail(err) {
          console.log(err);
        }
      });
    }
  },

  // 跳转到小程序
  goMiniProgram(e) {
    const url = e.currentTarget.dataset.url;
    if (url && (url.includes("http") || url.includes("https"))) {
      wx.navigateTo({ 
        url: "/pages/web-view/index?url=" + url 
      });
    }
  },

  // 导航到登录页面
  navigateToLogin() {
    if (this.data.userName) {
      return; // 已登录则不跳转
    }
    wx.navigateTo({
      url: '/pages/login/login'
    });
  },

  // 导航到仓储系统
  navigateToStock() {
    wx.showToast({
      title: '仓储系统功能开发中',
      icon: 'none'
    });
  },
  
  // 导航函数
  navigateToProducts(e) {
    // 阻止弹窗的点击事件冒泡
    if (e && e.currentTarget && e.currentTarget.dataset) {
      const dataset = e.currentTarget.dataset;
      
      // 检查是否有自定义跳转URL
      if (dataset.url) {
        // 获取传递的参数
        const url = dataset.url;
        const type = dataset.type || '';
        const qd = dataset.qd || '';
        const isTab = dataset.tab;
        
        // 先关闭弹窗
        this.setData({ overlayShow: false });
        
        if (isTab) {
          wx.switchTab({
            url: url,
          });
          return;
        }
        
        // 构建带参数的URL
        let targetUrl = url;
        if (type || qd) {
          targetUrl += '?';
          if (type) {
            targetUrl += `type=${type}`;
          }
          if (type && qd) {
            targetUrl += '&';
          }
          if (qd) {
            targetUrl += `qd=${qd}`;
          }
        }
        
        wx.navigateTo({
          url: targetUrl
        });
        return;
      }
    }
    
    // 默认跳转到产品页面
    wx.switchTab({
      url: '/pages/products/products'
    });
  },
  
  navigateToStores() {
    wx.switchTab({
      url: '/pages/stores/stores'
    })
  },
  
  navigateToMerchandise() {
    wx.switchTab({
      url: '/pages/merchandise/merchandise'
    })
  },
  
  navigateToProfile() {
    wx.switchTab({
      url: '/pages/profile/profile'
    })
  },
  
  navigateToCaseDetail(e) {
    const id = e.currentTarget.dataset.id;
    console.log('Navigating to case detail with ID:', id);
    
    if (!id) {
      console.error('No case ID found for navigation');
      wx.showToast({
        title: '案例信息不完整',
        icon: 'none'
      });
      return;
    }
    
    // 使用正确的参数名称进行导航
    wx.navigateTo({
      url: `/pages/products/details/index?id=${id}`
    });
  },
  
  navigateToWarrantyInput() {
    // 检查用户是否已登录
    const userInfo = wx.getStorageSync('userInfo');
    let isLoggedIn = false;
    let isAdmin = 0;
    
    if (userInfo) {
      try {
        const userInfoObj = typeof userInfo === 'string' ? JSON.parse(userInfo) : userInfo;
        isLoggedIn = true;
        isAdmin = userInfoObj.isAdmin;
      } catch (error) {
        console.error('Parse userInfo error:', error);
      }
    }
    
    // 检查权限
    if (!isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 2000
      });
      wx.navigateTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    // 检查管理员权限
    if (isAdmin !== 1) {
      wx.showToast({
        title: '您没有权限',
        icon: 'none',
        duration: 2000
      });
      return;
    }
    
    // 有管理员权限，允许跳转
    wx.navigateTo({
      url: '/pages/warranty/add/index'
    });
  },
  
  navigateToWarrantyQuery() {
    wx.navigateTo({
      url: '/pages/warranty/query/index'
    })
  },
  
  navigateToSearch() {
    // 实现搜索功能，这里可以展示搜索弹窗或者导航到搜索页
    wx.showToast({
      title: '搜索功能开发中',
      icon: 'none'
    })
  },
  
  navigateToActivity() {
    wx.showToast({
      title: '活动功能开发中',
      icon: 'none'
    })
  },
  
  navigateToBrand() {
    wx.navigateTo({
      url: '/pages/profile/about-us/about-us'
    })
  },

  // 导航到汽车改色模块
  navigateToColorChange() {
    // 检查用户是否已登录
    const userInfo = wx.getStorageSync('userInfo');
    let isLoggedIn = false;
    
    if (userInfo) {
      try {
        const userInfoObj = typeof userInfo === 'string' ? JSON.parse(userInfo) : userInfo;
        isLoggedIn = true;
      } catch (error) {
        console.error('Parse userInfo error:', error);
      }
    }
    
    // 检查登录状态
    if (!isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 2000
      });
      wx.navigateTo({
        url: '/pages/login/login'
      });
      return;
    }
    
    // 已登录，直接跳转
    wx.navigateTo({
      url: '/pages/color-change/index'
    });
  },

  onShareAppMessage() {
    const data = {
      title: "KSG汽车膜",
      path: "/pages/index/index",
      success: function (res) {
        // 转发成功
      },
      fail: function (res) {
        // 转发失败
      },
    };
    return data;
  },
  
  onShareTimeline() {
    return {
      title: 'KSG汽车膜专业服务'
    }
  },

  // 获取新闻列表
  async fetchNewsList(isLoadMore = false) {
    if (this.data.newsLoading) return;
    
    this.setData({ newsLoading: true });
    
    try {
      const params = {
        pageNo: isLoadMore ? this.data.newsPageNo : 1,
        pageSize: this.data.newsPageSize
      };
      
      const res = await api.news.getNewsList(params);
      
      if (res.status === 200 && res.data) {
        // 适配新的数据结构：数据在 res.data.newsList 中
        const newsList = res.data.newsList || [];
        const totalCount = res.data.count || 0;
        
        // 处理新闻数据
        newsList.forEach(item => {
          // 确保图片URL正确
          if (item.cover && !item.cover.startsWith('http')) {
            item.cover = `https://${item.cover}`;
          }
          
          // 处理时间格式
          if (item.createTime) {
            item.createTime = item.createTime.substring(0, 16); // 只显示到分钟
          }
          
          // 处理摘要长度
          if (item.content && item.content.length > 50) {
            item.content = item.content.substring(0, 50) + '...';
          }
        });
        
        if (isLoadMore) {
          // 加载更多
          const currentList = this.data.newsList;
          const updatedList = [...currentList, ...newsList];
          
          this.setData({
            newsList: updatedList,
            newsPageNo: this.data.newsPageNo + 1,
            newsNoMore: updatedList.length >= totalCount || newsList.length < this.data.newsPageSize
          });
        } else {
          // 首次加载
          this.setData({
            newsList: newsList,
            newsPageNo: 2,
            newsNoMore: newsList.length >= totalCount || newsList.length < this.data.newsPageSize
          });
        }
        
        console.log('新闻数据加载成功:', {
          currentPage: isLoadMore ? this.data.newsPageNo - 1 : 1,
          loadedCount: newsList.length,
          totalCount: totalCount,
          hasMore: !this.data.newsNoMore
        });
      }
    } catch (error) {
      console.error('获取新闻列表失败:', error);
      wx.showToast({
        title: '获取资讯失败',
        icon: 'none'
      });
    } finally {
      this.setData({ newsLoading: false });
    }
  },

  // 加载更多新闻
  loadMoreNews() {
    if (!this.data.newsNoMore && !this.data.newsLoading) {
      this.fetchNewsList(true);
    }
  },

  // 跳转到新闻详情
  navigateToNewsDetail(e) {
    const { url, title } = e.currentTarget.dataset;
    if (url) {
      wx.navigateTo({
        url: `/pages/news/webview/index?url=${encodeURIComponent(url)}&title=${encodeURIComponent(title || '资讯详情')}`
      });
    }
  },

  // 页面滚动事件
  onPageScroll(e) {
    const scrollTop = e.scrollTop;
    
    // 控制回到顶部按钮显示
    this.setData({
      showBackToTop: scrollTop > 300
    });
    
    // 检查是否需要加载更多新闻（距离底部200px时触发）
    if (!this.data.newsLoading && !this.data.newsNoMore) {
      wx.createSelectorQuery().select('.page').boundingClientRect((rect) => {
        if (rect) {
          const windowHeight = wx.getWindowInfo().windowHeight;
          const distanceToBottom = rect.height - scrollTop - windowHeight;
          
          if (distanceToBottom < 200) {
            this.loadMoreNews();
          }
        }
      }).exec();
    }
  },

  // 滚动到顶部
  scrollToTop() {
    wx.pageScrollTo({
      scrollTop: 0,
      duration: 300
    });
  }
})
